Software Evolution by Correctness Enhancement

نویسندگان

  • Wided Ghardallou
  • Nafi Diallo
  • Ali Mili
چکیده

Relative correctness is the property of a program to be more-correct than another with respect to a specification; this property enables us to rank candidate programs in a partial ordering structure whose maximal elements are the correct programs. Whereas traditionally we think of program derivation as a process of successive correctnesspreserving transformations (using refinement) starting from the specification, we argue that it is possible to derive programs by successive correctness-enhancing transformations (using relative correctness) starting from abort. One of the attributes of our approach is that it captures in the same mathematical model, not only the derivation of programs from scratch, but also most (if not all) of the activities that arise in software evolution. Given that most software is developed nowadays by evolving existing products rather than from scratch, any advance in the technology of program transformation by correctness enhancement stands to yield significant practical benefits.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Defining Software Faults Why It Matters

Because faults are at the center of software quality concerns, they ought to be defined formally, by semantics-based criteria that enable us to reason about them. In this paper, we consider a semantics-based definition of a fault, which involves the program, the faulty feature (at the appropriate level of granularity) and the specification against which correctness and incorrectness are defined...

متن کامل

Growing up with stability: How open-source relational databases evolve

Like all software systems, databases are subject to evolution as time passes. The impact of this evolution can be vast as a change to the schema of a database can affect the syntactic correctness and the semantic validity of all the surrounding applications. In this paper, we have performed a thorough, large-scale study on the evolution of databases that are part of larger open source projects,...

متن کامل

Software Reengineering for Evolution

Software evolution is the process of conducting continuous software reengineering. Reengineering implies a single change cycle, but evolution can go on forever. In other words, to a large extent, software evolution is repeated software reengineering. Therefore, this book discusses many technical details of reengineering. Any computing system, including hardware and software systems, will inevit...

متن کامل

Systematic Co-Evolution of OCL Expressions

Metamodels are the central artifacts in Model-Driven Engineering and like any other software artifact, subject to constant change. This fact necessitates the co-evolution of dependent artifacts such as models and transformations to resolve induced inconsistencies. While the co-evolution of models has been extensively studied, the co-evolution of transformations and especially OCL expressions be...

متن کامل

Property-Preserving Evolution of Components Using VPA-Based Aspects

Protocols that govern the interactions between software components are a popular means to support the construction of correct component-based systems. Previous studies have, however, almost exclusively focused on static component systems that are not subject to evolution. Evolution of component-based systems with explicit interaction protocols can be defined quite naturally using aspects (in th...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2016